package _02_FunInterface;

/**
 * 函数式接口 - 有参
 * 
 * 相对就是箭头函数加了参数
 * 
 * @author lenovo
 * @date 2020年7月27日
 */
public class _02_FunInterface {
	// 自定义静态方法,接收接口对象
	public static void call(MyFunctionInter_02 func, String msg) {
		// 调用接口内的成员方法
		func.printMessage(msg);
	}

	public static void main(String[] args) {
		// 1.8新特性写法
		// 第一种调用 : 直接调用自定义的 call 方法,传入箭头函数
		call((str) -> {
			System.out.println(str);
		}, "参数1");

		// 第二种调用 : 先创建函数对象,类似实现类接口的内部类对象
		MyFunctionInter_02 inter = (str) -> {
			System.out.println(str);
		};
		// 传入自定义方法
		call(inter, "参数2");

		// 调用实现的这个方法
		inter.printMessage("参数3");

//		参数1
//		参数2
//		参数3

	}

}

//函数式接口,只能由一个抽象方法,但是可以有默认方法
@FunctionalInterface
interface MyFunctionInter_02 {
	void printMessage(String msg);
}
